/*
* @Author: admin
* @Date:   2018-07-12 11:16:38
* @Last Modified by:   Administrator
* @Last Modified time: 2018-07-15 16:41:10
*/
var http = require('http');
var fs = require('fs');
var url = require('url');
var querystring = require('querystring');
var product = fs.readFileSync('./product.json','utf8');
var productjson = (JSON.parse(product)).myProduct;
var myProduct = JSON.parse(fs.readFileSync('./product.json','utf8')).myProduct;
var num;

// 获取当前日期函数
function getNowDate() {
	var date = new Date();
	var sign1 = "-";
	var sign2 = ":";
	var year = date.getFullYear() // 年
	var month = date.getMonth() + 1; // 月
	var day  = date.getDate(); // 日
	var hour = date.getHours(); // 时
	var minutes = date.getMinutes(); // 分
	var seconds = date.getSeconds() //秒
	// 给一位数数据前面加 “0”
	if (month >= 1 && month <= 9) {
		month = "0" + month;
	}
	if (day >= 0 && day <= 9) {
		day = "0" + day;
	}
	if (hour >= 0 && hour <= 9) {
		hour = "0" + hour;
	}
	if (minutes >= 0 && minutes <= 9) {
		minutes = "0" + minutes;
	}
	if (seconds >= 0 && seconds <= 9) {
		seconds = "0" + seconds;
	}
	var currentdate = year + sign1 + month + sign1 + day + " " + hour + sign2 + minutes + sign2 + seconds;
	return currentdate;
}
function getMaxnum(){
	num = productjson.length;
	for(i=0;i<productjson.length-1;i++){
			if( parseInt(productjson[i+1].id) >= parseInt(productjson[i].id) ){
				num = parseInt(productjson[i+1].id);
			}
		}
	return num;
}
// 创建一个服务器
http.createServer(function(req,res){
	// num = productjson.length;
	res.writeHead(200,{
		"Content-Type":"test/html;charset = utf8",
		"Access-Control-Allow-Origin": "*",  
		// 任何域名都可以请求这个接
		"Access-Control-Allow-Methods": "*"  
		//任何方法都可以请求这个
	}
);
// 加载缓存数据
	if(req.url == '/getList'){
		res.end(product);
	}else if(req.url == '/addList'){//新增数据
		num = getMaxnum()+1;
		var all = '';
		req.on('data',function(chunk){
			all+=chunk;
		})
		req.on('end',function(){
			// 新建一条数据
			var pro = {
				"id":(num).toString(),
				"name":querystring.parse(all).name,
				"time":getNowDate(),
				"uptime":"无更改"
			};
			// push方法添加到数组的末尾
			productjson.push(pro);
			// 重新写进json文件中，保存更改
			fs.writeFileSync('./product.json', '{"myProduct":'+JSON.stringify(productjson)+'}');
			// 重新读取json文件里面的数据
			product = fs.readFileSync('./product.json','utf8');
			res.end('['+JSON.stringify(pro)+']');
		})	
	}else if(req.url == '/delList'){
		var all = '';
		req.on('data',function(chunk){
			all+=chunk;
		})
		req.on('end',function(){
			// 重写productjson,返回的是删除之后的数据
			productjson = productjson.filter(function(productjson){
				return productjson.id != querystring.parse(all).id;
			});
			// 重新写入json文件
			fs.writeFileSync('./product.json', '{"myProduct":'+JSON.stringify(productjson)+'}');
			// 重新读取json文件里面的数据
			product = fs.readFileSync('./product.json','utf8');
			res.end(product);
		})	
	}else if(req.url == '/queryList'){
		var all = '';
		req.on('data',function(chunk){
			all+=chunk;
		})
		req.on('end',function(){
			// queryre返回的是一个数组长度为1的数组，里面的数据是要查询的数据
			queryre = productjson.filter(function(productjson){
				return productjson.name.includes(querystring.parse(all).name) ;
			});
			// 把数组转化成json字符串
			res.end(JSON.stringify(queryre));
		})	
	}else if(req.url == '/changeList'){
		var all = '';
		req.on('data',function(chunk){
			all+=chunk;
		})
		req.on('end',function(){
			// queryre返回的是一个数组长度为1的数组，里面的数据是要修改的数据
			queryre = productjson.filter(function(productjson){
				return productjson.id == querystring.parse(all).id;
			});
			// 把数组转化成json字符串
			res.end(JSON.stringify(queryre));
		})	
	}else if(req.url == '/saveList'){
		var all = '';
		req.on('data',function(chunk){
			all+=chunk;
		})
		req.on('end',function(){
			for(i=0;i<productjson.length;i++){
				console.log(querystring.parse(all).id);
				 if( productjson[i].id == querystring.parse(all).id ){
					 productjson[i].name = querystring.parse(all).name;
					 productjson[i].uptime = getNowDate();
				 }
			 }
			// 重新写入json文件
			fs.writeFileSync('./product.json', '{"myProduct":'+JSON.stringify(productjson)+'}');
			// 重新读取json文件里面的数据
			product = fs.readFileSync('./product.json','utf8');
			res.end(product);
		})	
	}
}).listen(8989);